home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Taifun
/
Taifun 151 (1991-03-10)(Manewaldt, A.)(DE)(PD).zip
/
Taifun 151 (1991-03-10)(Manewaldt, A.)(DE)(PD).adf
/
ASM09
/
ASM09.Dok
< prev
next >
Wrap
Text File
|
1991-01-26
|
4KB
|
157 lines
ASM09 - Ein 6809 Macroassembler
Copyright (C) 1990 by Alexander Holler
Ifflandstr.13
6800 Mannheim 1
Fido 2:247/55
Der Assembler kann fuer nicht!!!-gewerbliche Zwecke beliebig kopiert werden,
unter der Bedingung, das er immer zusammen mit den Files testasm09.asm und
ASM09.dok kopiert wird.
Die Benutzung oder Verbreitung fuer gewerbliche Zwecke bedarf einer
ausdruecklichen schriftlichen Genehmigung von mir, die unter obiger Adresse
zu erhalten ist.
Vorab:
Dieser Macroassembler wurde fuer private Zwecke erstellt, d.h. man kann
ihn nicht als komfortable und ausgereift bezeichnen.
Weiterhin wurde er nicht besonders ausfuehrlich getestet, weshalb ich etwaige
Fehler nicht ausschliesen kann. Nichtsdestotroz assemblierte er die von
mir benutzten Files mit dem gleichen Ergebnis wie der AVMAC09 von AVOCET auf
einem PC.
Aufruf:
Der Assembler wird mit aufgerufen mit
ASM09 quellfile[.asm]
Die Endung fuegt der Assembler, falls noetig, selbst hinzu.
Als Ergebnis liefert der Assembler ein File im Motorola-S1 Format,
welches jeder bessere Epromer lesen koennen muesste.
Zur Zwischenspeicherung benutzt der Assembler ein File namens ASM09.zwf
das nach Beendigung des Assemblierens wieder geloescht wird.
Syntax:
Die Zeilen des Quellfiles muessen wie folgt aussehen:
LABEL OPERANT ARGUMENT
Labels muessen immer am Anfang einer Zeile stehen, sonst haelt sie der
Assembler fuer Operanten.
Die Syntax der Operanten und der Argumente haelt sich an die Definitionen
von Motorola.
D.h. Hexzahlen werden mit '$' und Binaerzahlen mit '%' eingeleitet.
Als Operationen beherrscht der Assembler +,-,*,/ und ^ (hoch).
Achtung:
Bei Push und pull Befehlen verarbeitet der Assembler nur ein Argument,
d.h. anstatt pulu a,b,x muss pulu a pulu b pulu x geschrieben
werden.
Weiterhin wird angenommen das Direct Page Register immer auf 0 steht
Folgende Pseudos stehen zur Verfuegung:
%macro, %endm, %gensym, %include, end, equ und org.
%macro, %endm, %gensym:
%macro leitet eine Macrodefinition ein, die mit %endm abgeschlossen sein
muss. Es koennen mehrere Argumente uebergeben werden, wobei ich mit an
die Syntax des AVMAC von AVOCET gehalten habe.
Beispiel:
ldst %macro a,b,c
ld&a b
st&a c
%endm
Der Assembler generiert mit obiger Definition aus der Zeile
ldst b,#31,$e000
folgende Zeilen
ldb #31
stb $e000
%gensym wird benutzt um lokale Labels (innerhalb eines Macros) zu
definieren.
Beispiel:
getstr %macro a,b
%gensym string,stringe
ld&a #string
bra stringe
string db b
stringe
%endm
Ohne die Benutzung von %gensym wuerde der Assembler bei mehrmaliger
Benutzung von getstr eine mehrmalige Definiton der Labels string und
stringe feststellen und dies mit einer Fehlermeldung quittieren.
%include:
Zur Einbindung anderer Files.
Beispiel:
%include "def.asm"
org,equ,end:
Mit org wird dem Assembler mitgeteilt ab welcher Adresse er assembliert.
Fehlt diese Definition wird 0 angenommen.
Beispiel:
org $1000
...
org $2000
...
equ weist einem Symbol einen Wert zu.
Beispiel:
PROGRAMMSTART equ $100
org PROGRAMMSTART
...
END muss am Ende des Quellfiles stehen.
Fuer geuebte Programmierer muest diese Beschreibung reichen, andere werden
diesen Assembler wahrscheinlich sowieso nicht benutzen.
Im Zweifelsfall kann noch auf das File testasm09.asm das ich waehrend der
Entwicklungsphase zu Testzwecken benutzte.
In der momentane Version kann ASM09 noch kein Listing erzeugen, und weitere
Versionen werden auf sich warten lassen (wenn ueberhaupt, denn er hat
seinen Zweck erfuellt).
Falls jemand trotzdem Interesse an einer weiterentwickelten Version hat,
(z.B. mit Segmentierung und Linker) kann er sich ja mit mir unter obiger
Adresse in Verbindung setzen ich werde dann sehen was sich machen laesst.
Alex Holler